Choroplet Map
- 아래 같은지도에 Choropleth Map 처럼 선을 그린다.
- github에 선들을 그려주는 위도, 경도 데이터가 저장되어 있음
Make this Notebook Trusted to load map: File -> Trust Notebook
순서 1 : 지역구 그리기
- 링크 저장
- json 파일 load \(\to\) 복잡한 형채의 dic 형태로 저장되어 있음
global scale로 시각화
json파일 뜯어보기
- local_dict를 살펴보자.
Type: dict String form: {'type': 'FeatureCollection', 'features': [{'type': 'Feature', 'geometry': {'type': 'MultiPolygon <...> 'name': 'sgg', 'crs': {'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:OGC:1.3:CRS84'}}} Length: 4 Docstring: dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)
- 아래와 같이 4개의 원소를 가지는 딕셔너리 임을 확인
- 위 3개는 별거 없어보임
features길이가 250인 리스트형태이다.- 리스트내의 요소들은각 지역의 위도 경도 데이터를 가지고 있는것 같다.
{'type': 'Feature',
'geometry': {'type': 'MultiPolygon',
'coordinates': [[[[126.97468086053324, 37.629805433945975],
[126.97496550641705, 37.62902584732434],
[126.97619200024447, 37.629086831818235],
[126.97841861289852, 37.62929009924553],
[126.97952791872238, 37.62889299772442],
[126.97993254143336, 37.62855138674378],
[126.97997245663913, 37.62845560448294],
[126.98004544991201, 37.628280435760445],
[126.97960294035302, 37.626371002121644],
[126.98090237068868, 37.625391798020395],
[126.98168803207568, 37.62449661776251],
[126.98184774907679, 37.62431463061319],
[126.98310978892584, 37.622104640078],
[126.98365101056845, 37.62115092912986],
[126.98355888565348, 37.620963267437894],
[126.98317999257362, 37.62018285183479],
[126.9831620682276, 37.6192347829173],
[126.9837143460292, 37.61775856638039],
[126.98453643307462, 37.61598061074333],
[126.985901535693, 37.612194740823796],
[126.9857804843237, 37.61090698776889],
[126.98586523076781, 37.60946995153532],
[126.98623831468637, 37.607736782107125],
[126.98675598705915, 37.60608704965549],
[126.98677074181907, 37.60458661863664],
[126.9866691435352, 37.604023824468506],
[126.98589778740545, 37.60363176153766],
[126.98259603020061, 37.60224271097029],
[126.9806843648502, 37.60161031225276],
[126.97880665420949, 37.60101042316433],
[126.97852169405631, 37.60099248777431],
[126.97841693568347, 37.600914296754326],
[126.97830701720335, 37.600830447643865],
[126.97768193317589, 37.60024002437466],
[126.9774909383084, 37.599649166074286],
[126.97719804274786, 37.59864847380904],
[126.97672044958631, 37.59790077442683],
[126.97713557023776, 37.59768356016227],
[126.97874017601505, 37.59663493476611],
[126.97911091252222, 37.596394270916285],
[126.98148823597326, 37.59533576215007],
[126.98292059990969, 37.594775982193624],
[126.98384405286397, 37.59443543461552],
[126.98432317109803, 37.59437806733553],
[126.98450416009975, 37.59437471448865],
[126.9846156223434, 37.59438909275369],
[126.98463785016311, 37.59439408049888],
[126.98464216134765, 37.59439557572296],
[126.98466445483236, 37.59440401859687],
[126.98474441343951, 37.594434717703415],
[126.98479058424006, 37.594451906863895],
[126.98487868712496, 37.59446656147479],
[126.98514831673403, 37.594501790677405],
[126.98542946037894, 37.59444945443447],
[126.98577892249222, 37.59425495254234],
[126.98851705023388, 37.59194143989685],
[126.98886704210804, 37.59164472228141],
[126.98907495209343, 37.59142090222344],
[126.98908433025534, 37.59140908294205],
[126.98962720754243, 37.59139763837295],
[126.99366158210871, 37.59149362412968],
[126.99744340490047, 37.59221011675905],
[126.99845395445548, 37.59247126210828],
[127.00182654761254, 37.59117745103071],
[127.00408062474574, 37.58773357887768],
[127.00656012457411, 37.58553460128624],
[127.00863797169242, 37.58045993171883],
[127.01051131122689, 37.58025727035416],
[127.0111260694579, 37.58104392936677],
[127.0111791729006, 37.58109176738164],
[127.01169858419944, 37.58150458110694],
[127.0117885968101, 37.58157458058202],
[127.0120845128743, 37.581585674737156],
[127.01222457400928, 37.581550873062085],
[127.0124187027769, 37.58150235525185],
[127.01253278245557, 37.58147102693477],
[127.01262598550882, 37.58144402349896],
[127.01274334585422, 37.58141185855377],
[127.01285982629548, 37.58138609392204],
[127.01314825156626, 37.58143362114355],
[127.01324571819538, 37.58145032393419],
[127.0141191759168, 37.581820171723166],
[127.01474563580459, 37.582305831258346],
[127.01483334205895, 37.58233145649853],
[127.01491713941482, 37.582244907556685],
[127.01638580146992, 37.58193775580977],
[127.01673363020068, 37.58169269831286],
[127.01829142498933, 37.579049416348774],
[127.01830026223921, 37.57903270179077],
[127.0187770633223, 37.57751723332606],
[127.02179265953254, 37.57888146291368],
[127.02313849621643, 37.57802087910892],
[127.02336168058478, 37.57191110395814],
[127.0231368263208, 37.57196081106164],
[127.01902025943656, 37.57101323682973],
[127.01733386994712, 37.570076865408346],
[127.01003508740953, 37.569770822171066],
[127.00983517715241, 37.569764939352325],
[127.00667501959796, 37.5696322906642],
[127.00331554021028, 37.56962809025019],
[127.00166446511412, 37.56954949223042],
[126.99997987347145, 37.5692153342546],
[126.99979663625149, 37.569179012484],
[126.99919901238287, 37.569061584986855],
[126.99894910731591, 37.56901456760983],
[126.99872661605082, 37.56897317063658],
[126.99854409537699, 37.568939937981746],
[126.99823033791377, 37.56888559029638],
[126.99795832632955, 37.56884081225306],
[126.99734249535118, 37.56876646165091],
[126.99683684418163, 37.568709851806034],
[126.99646755692298, 37.56866901280384],
[126.99624859929914, 37.56864873037851],
[126.9908841263958, 37.568202068530944],
[126.99015096670833, 37.56813614100136],
[126.9899958620981, 37.568128802881496],
[126.98961154520899, 37.5681113107368],
[126.98956785452701, 37.56810990322031],
[126.98946917417102, 37.5681067923079],
[126.98894530081218, 37.56810280048161],
[126.98892726902085, 37.56810279903639],
[126.98892019626068, 37.56810279906341],
[126.98838782923946, 37.56812610223998],
[126.9882334327857, 37.568133130541256],
[126.98821751956565, 37.56813396831202],
[126.98663917909906, 37.568232328822624],
[126.97973830842082, 37.5690421486377],
[126.97762523789515, 37.569298907580105],
[126.97566360541524, 37.56938088043951],
[126.96909869121171, 37.56824768293371],
[126.96669861216496, 37.565820355825934],
[126.9657113705709, 37.56677550324494],
[126.95940037405296, 37.57304934989536],
[126.95491745681615, 37.577149174890465],
[126.95355819355073, 37.578748855084044],
[126.95362029368313, 37.57880909633655],
[126.95720618763337, 37.5798655310825],
[126.9575728370125, 37.58230278085636],
[126.95799889706633, 37.58412468840079],
[126.95799717111329, 37.58444209574531],
[126.95790145320846, 37.584703977736275],
[126.95782691437041, 37.58485252016721],
[126.95784782389684, 37.585019116837834],
[126.95783833056504, 37.58504093891924],
[126.9578273214224, 37.58506624584095],
[126.95747215846923, 37.5860469085176],
[126.95737395766116, 37.587076849872744],
[126.9573886107174, 37.58906602474426],
[126.95749035641607, 37.59007828277017],
[126.95779750312285, 37.592573592797144],
[126.95852639147067, 37.59418568474202],
[126.95902399975766, 37.59479744400614],
[126.95903333866578, 37.59505902103998],
[126.95826848335163, 37.597788688618316],
[126.9580418874916, 37.598155874167304],
[126.95771415677586, 37.59836707719559],
[126.9573078320294, 37.5985310319704],
[126.95654122604887, 37.598827579847494],
[126.95634147535245, 37.59892143950143],
[126.95414105350225, 37.59909827963582],
[126.95338041139009, 37.599531288469684],
[126.95259689745177, 37.60122903220133],
[126.95250806229828, 37.60156792706982],
[126.95237511989355, 37.602476036294],
[126.95356668581537, 37.60447934849368],
[126.95376271651638, 37.60469036467159],
[126.95388420830209, 37.60480196572351],
[126.95254683214502, 37.60665255755602],
[126.95220372203077, 37.60688813942989],
[126.95056465460655, 37.60835968464961],
[126.95033780725277, 37.60909261594867],
[126.95036280527036, 37.610622635741834],
[126.94982875644766, 37.61165624620594],
[126.94986821104538, 37.611730018151725],
[126.95047793576704, 37.6128699970444],
[126.95073164301206, 37.61352828204463],
[126.95079658268352, 37.613849365294406],
[126.95072414848573, 37.615537943529716],
[126.95046953204748, 37.616099153508785],
[126.94986337153628, 37.61872668218891],
[126.94889796158519, 37.623262743943236],
[126.94900026337734, 37.6243351349276],
[126.94971290787633, 37.625344069539224],
[126.94981195859722, 37.625497586539126],
[126.95045372101613, 37.626418006443956],
[126.95556524710337, 37.62828290175954],
[126.95841841842733, 37.629469751140356],
[126.96011573909414, 37.62977556572832],
[126.96708433443806, 37.63070658019315],
[126.97302977391784, 37.6323747679206],
[126.97538835725105, 37.63173308759023],
[126.97536907543345, 37.631698170595676],
[126.97508476623943, 37.63118349920217],
[126.97468086053324, 37.629805433945975]]]]},
'properties': {'name': '종로구',
'base_year': '2018',
'name_eng': 'Jongno-gu',
'code': '11010'}}
features의 내부구조를 또 살펴보니geometry는 위도 경도,type은 별거 없고,properties의 경우 이름, 연도, 영문 이름, 시도코드가 저장되어있다.
연습 : 덕진구와 완산구를 찾아보자.
- 지역 이름을 가지는 리스트를 생성
- index 함수 이용
- view vs copy
딕셔너리의 경우 copy를 명시하지 않으면 두 개의 객체가 동시의 변경된다.
따라서 딕셔너리를 이용할 경우 카피를 명시하고 사용하자
시각화
요약
- folium.Choropleth의 사용법
- 2개의 데이터를 연결해야함 : 하나는 일반 데이터 프레임, 하나는 json에서 나온 dict
- 데이터 연결을 위해서는 공유가능한 연결의 매체가 필요하다.
- 연결의 매개체는 df-key, local_dct2[”],
local_dict2['features'][?]['properties']['name']을 이용했다. - 연결의 매개체를
name이아닌 다른 것들도 이용할 수 있다.
m = folium.Map([35.84195368311022, 127.1155556693179],zoom_start=11,scrollWheelZoom=False)
choro = folium.Choropleth(
data=df, ## data1
geo_data=local_dict2, ## data2 (이 시점에서 폴리곤에 대한 정보가 choro 인스턴스에 전달)
columns=['key','value'], ## data1에서 중요한것들을 나열. 항상 [key,value]의 조합으로 써야한다.
# 이때 ['key','value']는 [data2와의 매개체,지도에서 색의 단계를 표현하는 변수]로 해석가능
key_on = 'feature.properties.name' ## data2에서 중요한것: 즉 data1과의 연결매개체
)
choro.add_to(m)
mMake this Notebook Trusted to load map: File -> Trust Notebook
대한민국 인구수 (global scale)
df=pd.read_csv('https://raw.githubusercontent.com/guebin/2021DV/master/_notebooks/2021-11-22-prov.csv')
df| 행정구역(시군구)별 | 총인구수 (명) | |
|---|---|---|
| 0 | 서울특별시 | 9532428 |
| 1 | 부산광역시 | 3356311 |
| 2 | 대구광역시 | 2390721 |
| 3 | 인천광역시 | 2945009 |
| 4 | 광주광역시 | 1442454 |
| 5 | 대전광역시 | 1454228 |
| 6 | 울산광역시 | 1122566 |
| 7 | 세종특별자치시 | 368276 |
| 8 | 경기도 | 13549577 |
| 9 | 강원도 | 1537717 |
| 10 | 충청북도 | 1596948 |
| 11 | 충청남도 | 2118977 |
| 12 | 전라북도 | 1789770 |
| 13 | 전라남도 | 1834653 |
| 14 | 경상북도 | 2627925 |
| 15 | 경상남도 | 3318161 |
| 16 | 제주특별자치도 | 676569 |